package com.itheima;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
// historyServlet:在  goods2.html页面中点击历史记录按钮，
// 执行该servlet，在该servlet中取出浏览器客户端的历史记录的cookie并将商品历史记录响应给浏览器。
@WebServlet("/goodsServlet")
public class GoodsServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=utf-8");
        //1.获取页面所有的cookie，然后判断cookie中是否含有name是"history"的cookie
        Cookie[] cookies = request.getCookies();
        //调用方法返回一个Cookie
        Cookie cookie = getCookie(request, "history");
        //获取当前浏览商品的参数值
        String good = request.getParameter("good");
        //假如该Cookie不存在，说明第一次访问，创建该Cookie
        if (cookie == null) {
            //创建Cookie对象，将商品存入Cookie中
            Cookie newCookie = new Cookie("history", good);
            //持久化保存一天
            newCookie.setMaxAge(60 * 60 * 24);
            //响应给浏览器
            response.addCookie(newCookie);
        } else {
            //存在历史记录，取出历史记录中的商品信息
            String value = cookie.getValue();
            //history galaxy_chuizi_xiaomi  按照_切割
            String[] s = value.split("_");
            //调用方法看该商品是否存在该数组中
            boolean flag = existGood(s, good);
            //如果存在该商品
            if (flag){
                //不需要添加
                //响应该Cookie给前端
                response.addCookie(cookie);
                //给个超链接
                response.getWriter().print("<br><a href=\"/goods2.html\">返回主页</a>");
            } else {
                //Cookie历史记录中未浏览过该商品（不存在）
                //拼接该cookie,修改value值
                value+="_"+good;
                cookie.setValue(value);
                //将新的Cookie响应给前端
                response.addCookie(cookie);
                //给个超链接
                response.getWriter().print("<br><a href=\"/goods2.html\">返回主页</a>");
            }
        }

    }


    //判断所有Cookie中name为history的Cookie是否存在
    public static Cookie getCookie(HttpServletRequest request, String cookieName) {
        //获取所有Cookie对象
        Cookie[] cookies = request.getCookies();
        if (cookies!=null){//遍历集合
            for (Cookie cookie : cookies) {
                //如果存在name值为cookieName的Cookie说明该Cookie存在
                if (cookieName.equals(cookie.getName())) {
                    //将该Cookie返回出去
                    return cookie;
                }
            }}

        //cookieName的Cookie说明该Cookie不存在
        return null;
    }

    //查询历史记录是否存在该商品
    public static boolean existGood(String[] s,String good){
        //遍历该数组，看是否存在该商品
        for (String s1 : s) {
            if (s1.equals(good)){
                //如果存在就返回true
                return true;
            }
        }
        return false;
    }

}